package com.xjw.application;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.servlet.ViewResolver;

import com.xjw.viewresolver.JsonViewResolver;

/**
 * 
 * 项目名称：spring-project  
 * 实现功能： 应用主入口 ，继承SpringBootServletInitializer，以便可以使用外置tomcat
 * 类名称：Application   
 * 类描述：(该类的主要功能)
 * 创建人：徐纪伟 
 * E-mail: 289045706@qq.com
 * 创建时间：2016-12-4下午04:50:41   
 * 修改人：   
 * 修改时间：   
 * 版权 :xujiwei
 * 修改备注：   
 * @version
 */
@EnableAutoConfiguration //告诉Spring基于class path的设置、其他bean以及其他设置来为应用添加各种Bean
@Configuration //告诉Spring这是一个配置类，里面的所有标注了@Bean的方法的返回值将被注册为一个Bean
@ComponentScan("com.xjw")//指定扫描包
@SpringBootApplication//启动器其实是包含了@Configuration、@EnableAutoConfiguration、@ComponentScan
@EnableScheduling//启用定时任务的功能
@EnableTransactionManagement //开启事务支持
public class Application extends SpringBootServletInitializer{
	
	@Override
	protected SpringApplicationBuilder configure(
			SpringApplicationBuilder builder) {
		return builder.sources(Application.class);
	}
 
    /**
     * json输出，访问时url以json结尾
    	* @方法名称: jsonViewResolver
    	* @return
    	* @author 徐纪伟
    	* 2016年12月5日 下午3:16:32
     */
    @Bean
    public ViewResolver jsonViewResolver() {
        return new JsonViewResolver();
    }
    
    
	
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
    
    
}
